# 读取JSON格式数据 - 另一种指定图表数据的方式
import json
import plotly.express as px
'''
ImportError: Plotly express requires pandas to be installed.
run command: pip install pandas
'''
import pandas as pd

filename = 'data/eq_data_1_day_m1.json'
with open(filename) as f:
    # json.load()将数据转化为Python能够处理的格式
    all_eq_data = json.load(f)

# 提取'features'相关联的数据
all_eq_dicts = all_eq_data['features']
# print(len(all_eq_dicts))

mags, titles, lons, lats = [], [], [], []

for eq_dict in all_eq_dicts:
    # 提取震级
    mag = eq_dict['properties']['mag']
    title = eq_dict['properties']['title']
    # longitude 经度
    lon = eq_dict['geometry']['coordinates'][0]
    # latitude 纬度
    lat = eq_dict['geometry']['coordinates'][1]
    mags.append(mag)
    titles.append(title)
    lons.append(lon)
    lats.append(lat)

""" 
print(mags[:10])
print(titles[:2])
print(lons[:5])
print(lats[:5])
"""

# 创建一个DataFrame将数据封装起来
data = pd.DataFrame(
    data=zip(lons, lats, titles, mags), columns=['经度', '纬度', '位置', '震级']
)
data.head()

fig = px.scatter(
    # x=lons,
    # y=lats,
    # labels={'x': '经度', 'y': '纬度'},
    data,
    x='经度',
    y='纬度',

    range_x=[-200, 200],
    range_y=[-90, 90],
    width=800,
    height=800,
    title='全球地震散点图'
)

fig.show()

fig.write_html('data/global_earthquakes.html')

